package com.redstar.HappyRefresh.schedul;


import com.redstar.HappyRefresh.pojo.HotVideo;

import java.util.*;

public class TopK { // 排行榜

    private int k = 0;

    private final Queue<HotVideo> queue;

    public TopK(int k,Queue<HotVideo> queue){
        this.k = k;
        this.queue = queue;
    }

    public void add(HotVideo hotVideo) { // 加入排行榜
        if (queue.size() < k) { // 热度排行榜未满时可直接填入
            queue.add(hotVideo);
        } else if (queue.peek().getHot() < hotVideo.getHot()){ // 队列头中的视频与指定视频比较热度
            queue.poll();
            queue.add(hotVideo);
        }
    }

    public List<HotVideo> get(){ // 取出数据
        ArrayList<HotVideo> list = new ArrayList<>(queue.size());
        while (!queue.isEmpty()) { // 将队列中的元素全部取出
            list.add(queue.poll());
        }
        Collections.reverse(list); // 反转列表
        return list;
    }
}
